#绘制箱型图
# import numpy as np
# import pandas as pd
#
# code_data = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100]
# df = pd.DataFrame({'Values': code_data})
#
# Q1 = df['Values'].quantile(0.25)  # 计算 Q1（25% 分位数）
# Q3 = df['Values'].quantile(0.75)  # 计算 Q3（75% 分位数）
# IQR = Q3 - Q1  # 计算四分位距
#
# # print(f'Q1: {Q1}, Q3: {Q3}, IQR: {IQR}')
#
# import seaborn as sns
# import matplotlib.pyplot as plt
#
# sns.boxplot(y=df['Values'])
# plt.show()

#matplotlib一系列图
import matplotlib.pyplot as plt
import numpy as np

# 🎯 解决中文显示问题
plt.rcParams['font.sans-serif'] = ['SimHei']  # Windows (黑体)
plt.rcParams['axes.unicode_minus'] = False    # 解决负号显示问题

# 📊 生成数据
x = np.linspace(0, 10, 100)
y = np.sin(x)
categories = ['A', 'B', 'C', 'D']
values = [10, 25, 15, 30]
scatter_x = np.random.rand(50)
scatter_y = np.random.rand(50)
hist_data = np.random.randn(1000)
pie_labels = ['苹果', '香蕉', '橙子', '葡萄']
pie_sizes = [30, 25, 20, 25]

# 🔲 创建子图布局
fig, axs = plt.subplots(2, 3, figsize=(15, 10))

# 1️⃣ 折线图
axs[0, 0].plot(x, y, label='sin(x)', color='b', linestyle='-')
axs[0, 0].set_title("折线图")
axs[0, 0].set_xlabel("X 轴")
axs[0, 0].set_ylabel("Y 轴")
axs[0, 0].legend()
axs[0, 0].grid(True, linestyle='--', alpha=0.6)

# 2️⃣ 柱状图
axs[0, 1].bar(categories, values, color=['red', 'blue', 'green', 'purple'])
axs[0, 1].set_title("柱状图")
axs[0, 1].set_xlabel("类别")
axs[0, 1].set_ylabel("数值")

# 3️⃣ 散点图
axs[0, 2].scatter(scatter_x, scatter_y, color='g', marker='o', alpha=0.7)
axs[0, 2].set_title("散点图")
axs[0, 2].set_xlabel("X 轴")
axs[0, 2].set_ylabel("Y 轴")

# 4️⃣ 直方图
axs[1, 0].hist(hist_data, bins=30, color='c', edgecolor='black', alpha=0.7)
axs[1, 0].set_title("直方图")
axs[1, 0].set_xlabel("值")
axs[1, 0].set_ylabel("频率")

# 5️⃣ 饼图
axs[1, 1].pie(pie_sizes, labels=pie_labels, autopct='%1.1f%%',
              colors=['red', 'yellow', 'orange', 'purple'])
axs[1, 1].set_title("水果比例饼图")

# 6️⃣ 预留空白子图（可自定义）
axs[1, 2].axis('off')  # 隐藏空白区域

# 🎨 调整布局
plt.tight_layout()

# 📷 保存高清图片
plt.savefig("matplotlib_examples.png", dpi=300)

# 🚀 显示所有图表
plt.show()
